home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntinc20 / compiler.h < prev    next >
C/C++ Source or Header  |  1992-05-15  |  3KB  |  118 lines

  1. /* compiler specific defines */
  2. /* this file is guaranteed to be included exactly once if you include
  3.    anything at all. all site-dependent or compiler-dependent stuff
  4.    should go here!!!
  5.  */
  6.  
  7. #ifndef _COMPILER_H
  8. #define _COMPILER_H
  9.  
  10. /* symbol to identify the library itself. this should _always_ be defined */
  11. #ifndef __MINT__
  12. #define __MINT__
  13. #endif
  14.  
  15. /* symbols to identify the type of compiler */
  16. #ifdef SOZOBON
  17. #define __SOZOBON__
  18. #endif
  19.  
  20. /* general library stuff */
  21. /* __SIZE_TYPEDEF__:     the type returned by sizeof() */
  22. /* __PTRDIFF_TYPEDEF__: the type of the difference of two pointers */
  23. /* __WCHAR_TYPEDEF__:     wide character type (i.e. type of L'x') */
  24. /* __EXITING: the type of a function that exits */
  25. /* symbols to report about compiler features */
  26. /* #define __NEED_VOID__    compiler doesn't have a void type */
  27. /* #define __MSHORT__        compiler uses 16 bit integers */
  28. /* (note that gcc and C68 define this automatically when appropriate) */
  29.  
  30. #ifdef __GNUC__
  31. #define __SIZE_TYPEDEF__ unsigned long
  32. #define __PTRDIFF_TYPEDEF__ long
  33. #define __WCHAR_TYPEDEF__ int
  34. #define __EXITING volatile void
  35. #ifndef __NO_INLINE__
  36. # define __GNUC_INLINE__
  37. #endif
  38. #endif
  39.  
  40. #ifdef __C68__
  41. #define __SIZE_TYPEDEF__ unsigned long
  42. #define __PTRDIFF_TYPEDEF__ long
  43. #define __WCHAR_TYPEDEF__ char
  44. #define __EXITING void
  45. #endif
  46.  
  47. #ifdef __SOZOBON__
  48. /*
  49.  * Temporary hacks to overcome 1.33i's short symbol names. Hopefully future
  50.  * versions will allow the extended Sozobon symbol format.
  51.  */
  52. #define _mallocChunkSize _sc_mCS
  53. #define _malloczero _sc_mz
  54. #define _console_read_byte _sc_crb
  55. #define _console_write_byte _sc_cwb
  56.  
  57. /* Doesn't know (void *) is special (but can handle it); this works better. */
  58. #define __NULL (0L)
  59.  
  60. #ifdef OLD_SOZOBON
  61. #define void char
  62. #endif
  63.  
  64. #define __SIZE_TYPEDEF__ unsigned int
  65. #define __PTRDIFF_TYPEDEF__ long
  66. #define __WCHAR_TYPEDEF__ char
  67. #define __EXITING void
  68. #define __MSHORT__
  69. #endif
  70.  
  71. /* these are common to all compilers on the ST, I think */
  72. #define __VA_LIST__ char *
  73.  
  74. #ifndef __NULL
  75. #  ifdef __MSHORT__
  76. #    define __NULL ((void *)0)
  77. #  else
  78.      /* avoid complaints about misuse of NULL :-) */
  79. #    define __NULL (0)
  80. #  endif
  81. #endif
  82.  
  83. #ifdef __cplusplus
  84. # define __EXTERN
  85. # define __PROTO(x) x
  86. #else
  87. # ifdef __STDC__
  88. #  ifndef __NO_PROTO__
  89. #    define __PROTO(x) x
  90. #  endif
  91. #  define __EXTERN
  92. # else
  93. #  define __EXTERN extern
  94. /*
  95.  * fudge non-ANSI compilers to be like ANSI
  96.  */
  97. #  define const
  98. #  define volatile
  99.  
  100. #  ifdef __NEED_VOID__
  101. typedef char void;    /* so that (void *) is the same as (char *) */
  102.     /* also lets us know that foo() {...} and void foo() {...} are
  103.        different */
  104. #  endif
  105. # endif /* __STDC__ */
  106. #endif /* __cplusplus */
  107.  
  108. #ifndef __PROTO
  109. #define __PROTO(x) ()
  110. #endif
  111.  
  112. /* macros for POSIX support */
  113. #define _UID_T unsigned short
  114. #define _GID_T unsigned short
  115. #define _PID_T int
  116.  
  117. #endif /* _COMPILER_H */
  118.